package com.cloud.common.exception.enums;

/**
 * ErrorEnum
 *
 * @author wangjian
 * @description error类型枚举类
 */
public enum ErrorEnum implements CloudErrorEnum {

    // 系统错误，大多数service层异常上游系统都不必感知，同意返回此错误类型即可
    UNKNOWN(500, "系统内部错误，请联系管理员"),
    PATH_NOT_FOUND(404, "路径不存在，请检查路径"),
    NO_AUTH(403, "没有权限，请联系管理员"),
    DUPLICATE_KEY(501, "数据库中已存在该记录"),
    TOKEN_GENERATOR_ERROR(502, "token生成失败"),
    NO_UUID(503, "uuid为空"),
    SQL_ILLEGAL(504, "sql非法"),
    IO_ERROR(505, "io异常"),
    //通用异常
    PARAM_ERROR(800, "参数校验失败"),
    DATA_NOT_EXISTS(801, "数据不存在, 请检查数据是否存在!"),
    //用户权限错误
    INVALID_TOKEN(1001, "token不合法"),
    OSS_UPLOAD_ERROR(10051, "上传失败"),
    //个人信息错误
    HEAD_PHOTO_NOT_FIND(1002, "用户头像不存在"),
    /**
     * 手机号码不正确
     */
    USER_PHONE_INVALID(1003, "原手机号码不正确"),
    /**
     * 原登录密码不正确
     */
    USER_PASSWORD_INVALID(1004, "原登录密码不正确"),
    /**
     * 该岗位下还有人员
     */
    ORGANIZATION_HAVE_PEOPLE(1005, "该机构下还有人员"),
    /**
     * 数据新增失败
     */
    INSERT_DATA_ERROR(1006, "数据新增失败"),
    /**
     * 数据删除失败
     */
    DELETED_DATA_ERROR(1008, "删除数据失败"),
    //组织错误
    /**
     * 查无该企业
     */
    COMPANY_INVALID(1007, "当前未绑定企业或状态不正确!"),
    COMPANY_NOT_EXISTS_ACCOUNT(1009, "用户或用户列表不属于该企业!"),
    //登录异常
    /**
     * 登录异常
     */
    LOGIN_ERROR(2000, "登录异常"),
    /**
     * 账号或密码错误
     */
    ACCOUNT_ERROR(2001, "账号或密码错误"),
    /**
     * 初始化账号
     */
    INIT_ACCOUNT_ERROR(2002, "初始化账号"),
    ACCOUNT_NOT_EXISTS(2003, "该账号不存在!"),
    ACCOUNT_NOT_REGISTER(2004, "手机号尚未注册!"),
    ACCOUNT_STATUS_FAIL(2005, "账号状态不正常!"),
    FORGET_PASSWORD_CERT_FAIL(2006, "证件号码不匹配!"),
    //群聊异常
    /**
     * 群聊信息不正确
     */
    GROUP_ID_ERROR(4007, "此群不存在或此用户不为群主"),
    GROUP_ERROR(4007, "群组异常"),
    //邀请异常
    INVITE_INVALID(5007, "邀请不存在"),
    INVITE_ERROR(5008, "邀请不存在"),
    //铃铛通知异常
    BELL_MSG_INVALID(6007, "铃铛消息不存在"),
    // OSS 相关
    OSS_GET_URL_ERROR(9000, "OSS 获取文件信息失败!"),
    //导出pdf异常
    IMPORT_PDF_ERROR(10000, "导出pdf失败"),

    // 会议相关
    MEETING_CREATE_USERS_ERROR(20000, "创建会议失败, 一个或多个参会人与企业关联状态不正确!"),
    MEETING_CREATE_USERS_REPEAT(20001, "创建会议失败, 参会人不可担任多个角色!"),
    MEETING_CREATE_ROLE_TEMPLATE_FAIL(20002, "选中的角色模板或角色有改动, 请重新创建会议!"),
    MEETING_CREATE_TYPE_FAIL(20003, "选中的会议类型有改动, 请重新创建会议!"),
    MEETING_CREATE_TIME_FAIL(20004, "创建会议失败, 预计开始时间应晚于当前时间, 且早于预计结束时间!"),
    MEETING_CREATE_USERS_EMPTY(20005, "创建会议失败, 参会人列表不能为空!"),
    ;

    private int code;
    private String msg;

    @Override
    public int getCode() {
        return code;
    }

    public void setCode(int code) {
        this.code = code;
    }

    @Override
    public String getMsg() {
        return msg;
    }

    public void setMsg(String msg) {
        this.msg = msg;
    }

    /**
     * @param code
     * @param msg
     * @author wangjian
     * @create 2020年11月20日 下午9:28:34
     */
    private ErrorEnum(int code, String msg) {
        this.code = code;
        this.msg = msg;
    }
}
